package com.yidu.hbatsft.service;

import com.yidu.hbatsft.domain.AtsAttachAudit;
import com.yidu.hbatsft.domain.AtsAttachment;
import com.yidu.hbatsft.domain.AtsAttachmentCondition;
import com.yidu.hbatsft.domain.AtsFileData;

import java.util.List;
import java.util.Map;
/**
 * ClassName:AtsAttachmentServiceImpl
 * Package:com.yidu.hbatsft.service
 * Description: 附件审核功能类
 *
 * @Date 2019-11-04 14:37
 * @Author 陈熠
 */
public interface AtsAttachmentService {
    /**
     * 根据id查询附件表
     * @param attachId 功能id
     * @return  功能对象
     */
    AtsAttachment selectByPrimaryKey(Integer attachId);

    /**
     * 根据附件id查询用户id；
     * @param attachId 附件id
     * @return 用户id集合
     */
    String[] findUserIdsByAttachId(Integer attachId);

    /**
     * 查询首页所需要的信息
     * @param attachmentCondition 用户id，附件类别，分页参数
     * @return 附件信息
     */
    List<AtsAttachment> selectHomePageByUserId(AtsAttachmentCondition attachmentCondition);


    /**
     * 查询集合
     * @param attachmentCondition 辅助功能条件类
     * @return 集合对象
     */
    List<AtsAttachment> selectTypeAll(AtsAttachmentCondition attachmentCondition);

    /**
     * 查询总行数
     * @param attachmentCondition 辅助功能条件类
     * @return 总行数
     */
    int selectCount(AtsAttachmentCondition attachmentCondition);

    /**
     * 根据用户id查询所拥有的附件表
     * @param attachmentCondition 用户id
     * @return 附件表信息。
     */
    List<AtsAttachment> selectByUserId(AtsAttachmentCondition attachmentCondition);

    /**
     * 根据用户id查询所拥有的附件表的行数
     * @param attachmentCondition 用户id
     * @return 附件表总行数。
     */
    int selectByUserIdCount(AtsAttachmentCondition attachmentCondition);

    /**
     * 根据附件表类型查询所拥有的附件表
     * @param attachmentCondition 附件表类型，page
     * @return 附件表信息。
     */
    List<AtsAttachment> selectByAttachType(AtsAttachmentCondition attachmentCondition);


    /**
     * 根据附件表类型查询所拥有的附件表的行数
     * @param attachmentCondition 用户id
     * @return 附件表总行数。
     */
    int selectByAttachTypeCount(AtsAttachmentCondition attachmentCondition);

    /**
     * 批量删除加删除
     * @param attachmentCondition 辅助功能条件类
     * @return 删除条数
     */
    int deleteByAttachId(AtsAttachmentCondition attachmentCondition);

    /**
     * 新增，根据条件判断新增
     * @param record 新增数据对象
     * @return 新增类型，新增id
     */
    AtsAttachmentCondition insertSelective(AtsAttachment record, AtsAttachmentCondition condition);

    /**
     * 根据id修改辅助功能
     * @param record 修改对象
     * @return 成功修改条数
     */
    AtsAttachmentCondition updateByPrimaryKeySelective(AtsAttachment record, AtsAttachmentCondition condition);


    /**
     * 新增文件对象
     * @param atsFileData 文件对象
     * @return 文件id
     */
    AtsAttachmentCondition insertFileData(AtsFileData atsFileData);

    /**
     * 修改文件对象
     * @param atsFileData 文件对象
     * @return 文件id
     */
    AtsAttachmentCondition updateFileData(AtsFileData atsFileData);

    /**
     * 修改文件对象，删除操作
     * @param atsFileData 文件对象
     * @return 结果
     */
    AtsAttachmentCondition deleteFileData(AtsFileData atsFileData);

    /**
     * 查询相关文件
     * @param record 文件id，文件类型
     * @return 相关文件集合
     */
    List<AtsFileData> selectAttachFileAll(AtsFileData record);


    /**
     * 表格删除时，对应的文件删除
     * @param record 文件所属类型id
     * @return 结果
     */
    int updateFileIsva(AtsFileData record);

    /**
     * 根据提交查询相应文件数量；
     * @param record 条件
     * @return 文件数量
     */
    int selectFileCount(AtsFileData record);

    /**
     * 查询所有用户；
     * @return 用户树形控件需要的json格式数据
     */
    List<Map<String, Object>> findAllUsers();

    /**
     * 对文件进行编译
     * @param atsFileData 编译对象
     * @return 编译后，存储的文件地址
     */
    AtsFileData fileCompile(AtsFileData atsFileData);

    /**
     * 根据附件表id查询审核集合
     * @param attachmentCondition 附件表id信息
     * @return 审核集合
     */
    List<AtsAttachAudit> selectByAttachId(AtsAttachmentCondition attachmentCondition);


    /**
     * 根据附件表id查询审核总行数
     * @param attachmentCondition 附件表id信息
     * @return 审核总行数
     */
    int selectByAttachIdCount(AtsAttachmentCondition attachmentCondition);

    /**
     * 新增审核
     * @param atsAttachAudit 审核信息
     * @return 新增条数
     */
    int insertAudit(AtsAttachAudit atsAttachAudit);
}
